package com.upcode.weighing.vo.req.pc.pay;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @author LeiDong
 * @version 1.0
 * @date 2021年04月23日 14:41
 * @description 缴费账单交互Vo
 */
@Data
@EqualsAndHashCode(callSuper=false)
@ApiModel(value = "缴费账单Vo",description = "缴费账单Vo")
public class PayBillsVo implements Serializable {
    @JsonSerialize(using= ToStringSerializer.class)
    @ApiModelProperty(value = "账单Id  主键")
    private Long billId;

    @ApiModelProperty(value = "账单编号")
    private String billCode;

    @ApiModelProperty(value = "项目id")
    @JsonSerialize(using= ToStringSerializer.class)
    private Long projectNumber;

    @ApiModelProperty(value = "项目名称")
    private String houseProjectName;

    @ApiModelProperty(value = "楼宇id")
    @JsonSerialize(using= ToStringSerializer.class)
    private Long towerNumber;

    @ApiModelProperty(value = "楼宇名称")
    private String towerName;

    @ApiModelProperty(value = "单元号id")
    @JsonSerialize(using= ToStringSerializer.class)
    private Long apartmentNumber;

    @ApiModelProperty(value = "单元号")
    private String apartment;

    @ApiModelProperty(value = "房屋id")
    @JsonSerialize(using= ToStringSerializer.class)
    private Long roomNumber;

    @ApiModelProperty(value = "房屋")
    private Long roomName;

    @ApiModelProperty(value = "面积")
    private BigDecimal acreage;

    @ApiModelProperty(value = "层高")
    private BigDecimal roomHigh;

    @ApiModelProperty(value = "账单状态")
    private Integer billStatus;

    @ApiModelProperty(value = "供能类别")
    private Integer energyType;

    @ApiModelProperty(value = "账单开始年度")
    private LocalDateTime billStartYear;

    @ApiModelProperty(value = "账单结束年度")
    private LocalDateTime billEndYear;

    @ApiModelProperty(value = "应缴总额")
    private BigDecimal totalAmount;

    @ApiModelProperty(value = "业主名称")
    private String roomOwnerName;

    @ApiModelProperty(value = "业主手机号")
    private String roomOwnerPhone;

    @ApiModelProperty(value = "使用人")
    private String roomUserName;

    @ApiModelProperty(value = "使用人手机号")
    private String roomUserPhone;

    @ApiModelProperty(value = "业主身份证号")
    private String proprietorIdcardNo;

    @ApiModelProperty(value = "缴费系数")
    private BigDecimal payCoefficient;

    @ApiModelProperty(value = "欠费金额")
    private BigDecimal postageDue;

    @ApiModelProperty(value = "欠费详情")
    private String postageDueDetails;

    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;

    @ApiModelProperty(value = "创建人")
    private String createUser;

    @ApiModelProperty(value = "创建人姓名")
    private String createUserName;

    @ApiModelProperty(value = "更新人id")
    private Long updateUser;

    @ApiModelProperty(value = "更新人姓名")
    private String updateUserName;

    @ApiModelProperty(value = "账单废弃时间")
    private LocalDateTime deleteTime;

    @ApiModelProperty(value = "账单作废操作人")
    private String deleteUser;

    @ApiModelProperty(value = "删除人姓名")
    private String deleteUserName;

    @ApiModelProperty(value = "审核人")
    private Long reviewUser;

    @ApiModelProperty(value = "审核人姓名")
    private String reviewUserName;

    @ApiModelProperty(value = "审核意见")
    private String reviewMean;

    @ApiModelProperty(value = "审核时间")
    private LocalDateTime reviewTime;

    @ApiModelProperty(value = "减免证明文件Ids")
    private String reviewFileNumber;

    @ApiModelProperty(value = "对账状态")
    private Integer accountStatus;

    @ApiModelProperty(value = "对账人")
    @JsonSerialize(using= ToStringSerializer.class)
    private Long accountPeople;

    @ApiModelProperty(value = "对账时间")
    private LocalDateTime accountTime;

    @ApiModelProperty(value = "已缴金额")
    private Integer payAmount;

    @ApiModelProperty(value = "待缴总额")
    private Integer waitAmount;

    @ApiModelProperty(value = "减免总额")
    private Integer breaksAmount;

    @ApiModelProperty(value = "审核结果")
    private Integer reviewResult;

    @ApiModelProperty(value = "退房时间")
    private String roomReturnTime;

    @ApiModelProperty(value = "基础缴费总额")
    private Integer payBaseAmount;

    @ApiModelProperty(value = "房屋编号")
    private Integer roomNames;

    @ApiModelProperty(value = "微信支付订单号")
    private String transactionId;

    @ApiModelProperty(value = "供能时长")
    private Integer timeFrame;
    @ApiModelProperty(value = "应缴金额备注")
    private String yjRemark;
    @ApiModelProperty(value = "减免金额备注")
    private String jmRemark;

    @ApiModelProperty(value = "减免特殊用户标识,Y具有权限，N无权限")
    private String userTag; //减免特殊用户标识
}
